<?

/*
*
*   Excalibur Content Management System
*   Copyright © 2008 Egor "Sontan" Kuryanovich
*
*   Based on Explay Engine v2.0 by Golovdinov Alexander
*
*   Official site: www.excms.ru
*   Contact e-mail: support@excms.ru
*
*   GNU General Public License original source:
*   http://www.gnu.org/licenses/gpl-3.0.html
*
*/


header('Cache-control: no-cache');
header('Content-type: text/html; charset=utf-8');

$EXCMS = 'work';

error_reporting (0);

include $_SERVER['DOCUMENT_ROOT'].'/engine/settings.php';
include $_SERVER['DOCUMENT_ROOT'].'/engine/mysql.class.php';
$db = new DB($server, $dbusername, $dbpassword, $dbname);
$db->connect();

if (!$mainsettings = $db->query ('SELECT * FROM site_main')) 
{ 
	print '<center><b>Невозможно взять данные из БД!<br>Обратитесь к администратору сайта!</b>'; 
	exit; 
}

$SITE = $db->fetch_array ($mainsettings);
$theme = $SITE['site_theme'];

//Если есть активная сессия
if (isset($_COOKIE['login']) && isset ($_COOKIE['pass']) && $_COOKIE['login'] != "false" && $_COOKIE['pass'] != "false") 
{
	// Экранируем данные сессии
	$G_USER_LOGIN = addslashes($_COOKIE['login']);
	$G_USER_PASS = addslashes($_COOKIE['pass']);

	// Если данные существуют то пытаемся загрузить информацию о голосующем
	if ($G_USER_LOGIN != "" && $G_USER_PASS != "")
	{
		$S_USER = $db->query ('SELECT * FROM '.DB_PEREFIX."_users WHERE user_login = '$G_USER_LOGIN' AND user_password = '$G_USER_PASS'");
	}
	
	// Если запрос удачен то загружаем информацию о голосующем в $G_USER
	if ($db->num_rows ($S_USER) == 1) 
	{
		$G_USER = $db->fetch_array ($S_USER);
	}
}

// Если голосующий пользователь не существует или не прислана цель голосования
if (!isset($G_USER)) exit;
if (!isset($_POST['user_id']) || !isset($_POST['value'])) exit;

// Пытаемся загрузить пользователя за которого голосуют
$id = intval($_POST['user_id']);
$get_user = $db->query ("SELECT user_id, user_karma, karma_votes, voters FROM ".DB_PEREFIX."_users WHERE user_id = '$id'");

// Если пользователь существует то загружаем его карму
if ($db->num_rows($get_user) != 1) exit;
list($target_id, $karma, $votes, $voters) = $db->fetch_row($get_user);

// Если карма голосующего меньше ноля и он не администратор то выходим
if ($G_USER['user_karma'] < 0 && $G_USER['user_group'] != "admin") exit;

// Определяем вес голоса
$unit = 1;
if ($G_USER['user_karma'] > 20 || $G_USER['user_group'] == "admin") $unit = 2;
if ($G_USER['user_karma'] > 50)	$unit = 3;
if ($G_USER['user_karma'] > 100)	$unit = 4;

// Добавляем случайную дробную часть
$unit = $unit.'.'.mt_rand(0,50);

// Максимальный вес голоса равен 5
if ($unit > 5) $unit = 4;

// Применяем вес голоса на карму цели
if ($_POST['value'] == 1)		$new = $karma[0] + $unit;
elseif ($_POST['value'] == 2)	$new = $karma[0] - $unit;
else exit;

// Добавляем голос
$votes = $votes + 1;
$new = number_format($new, 2, '.', '');

// TODO: Добавить проверку на голосовавших
$made_votes = explode(",", $voters);
foreach ($made_votes as $vote)
{
	list ($who, $how) = explode("=", $vote);
	if ($who == $G_USER['user_id']) exit;
}

// FIXME: Переделать систему голосования
// Обновляет список голосовавших
($voters == "") 
				? $new_voters = $G_USER['user_id'].'='.$_POST['value'] 
				: $new_voters = $voters.','.$G_USER['user_id'].'='.$_POST['value'];

// Обновляем профиль пользователя
if ($db->query('UPDATE '.DB_PEREFIX."_users SET user_karma = '$new', karma_votes = '$votes', voters = '$new_voters' WHERE user_id = '$id'")) 
{
	// FIXME: Переделать систему голосования
	// Добавляет запись о голосовании в профиль голосовавшего
	($G_USER['my_votes'] == '') ? $new_votes = $id : $new_votes = $G_USER['my_votes'].",".$id;
	$db->query('UPDATE '.DB_PEREFIX."_users SET my_votes = '$new_votes' WHERE user_id = ".$G_USER['user_id']);
	
	// Загружаем шаблон
	$file = file_get_contents ($_SERVER['DOCUMENT_ROOT']."/themes/$theme/elements.tpl");

	// Выбираем элемент шаблона в зависимости от результата голосования
	if ($new >= 0) 
	{
		$start	= '{ajax_good_carma_cant}'; 
		$end	= '{/ajax_good_carma_cant}'; 
	}
	else 
	{
		$start	= '{ajax_bad_carma_cant}'; 
		$end	= '{/ajax_bad_carma_cant}'; 
	}

	// Обновляем переменные в шаблоне
	preg_match ("#$start(.+?)$end#is", $file, $element);
	$print = str_replace ('{KARMA}', number_format($new, 2, ',', ''), $element[1]);
	$print = str_replace ('{VOTES}', $votes, $print);
	$print = str_replace ('{USER_ID}', $target_id, $print);	
	// Выводим блок кармы
	echo $print;
}

